--- /dev/null
+# stolen from Kakutani Shintaro http://github.com/kakutani/yaml_waml
+
+require "yaml"
+
+class String
+ def is_binary_data?
+ false
+ end
+end
+
+module YamlWaml
+ def decode(orig_yamled)
+ yamled_str = case orig_yamled
+ when String then orig_yamled
+ when StringIO then orig_yamled.string
+ else return orig_yamled
+ end
+ yamled_str.gsub!(/\\x(\w{2})/){[$1].pack("H2")}
+ return yamled_str
+ end
+ module_function :decode
+end
+
+ObjectSpace.each_object(Class) do |klass|
+ klass.class_eval do
+ if method_defined?(:to_yaml) && !method_defined?(:to_yaml_with_decode)
+ def to_yaml_with_decode(*args)
+ io = args.shift if IO === args.first
+ yamled_str = YamlWaml.decode(to_yaml_without_decode(*args))
+ io.write(yamled_str) if io
+ return yamled_str
+ end
+ alias_method :to_yaml_without_decode, :to_yaml
+ alias_method :to_yaml, :to_yaml_with_decode
+ end
+ end
+end
\ No newline at end of file